<?php

namespace App\Service\Option;


use App\Service\Page;
use function view;

class View
{
    // 需要用的
    // 使用静态属性 方便多次实例化的时候，只有一次传值：其他时候实例化同样可以调用该属性的值
    protected static $request;
    protected static $assign;

    // 构造方法
    public function __construct()
    {
        // 初始化
        $this->initialize();
    }

    // 设置app
    public function setApp($request)
    {
        if(empty(self::$request)){
            self::$request = $request;
        }

        return $this;
    }

    // 初始化
    protected function initialize() { }

    #######################################################################################################
    // 制作翻页
    public function getPages($total, $page, $rows)
    {
        $result = (new Page($total, $page, $rows))->show();

        return $result;
    }

    // 加载模板输出
    public function dispaly($template, $vars = [])
    {
        $vars     = empty($vars) ? self::$assign : (self::$assign ? array_merge(self::$assign, $vars) : $vars);
        $vars     = empty($vars) ? [] : $vars;
        $tpl_file = (isMobile() ? 'wap/' : '').$template;

        return view($tpl_file, $vars);
    }

    // 返回数据
    public function assign($name, $value = '')
    {
        if(is_array($name)){
            self::$assign = array_merge(self::$assign, $name);
        } else{
            self::$assign[$name] = $value;
        }

        return $this;
    }

    public function getAssign($name, $value = '')
    {
        return self::$assign[$name] ?? $value;
    }

    #######################################################################################################

}
